/**
 * 
 */
package bbdd.configuracion;

import java.util.HashMap;

import controlador.io.Config;

/**
 * @author teledhil
 * 
 */
public class Configuracion {

	private static HashMap<String, String> hashMap;

	// PARAMETROS GLOBALES
	private static int cicloReloj;

	// AUTOMATA 1
	private static int longitudEjes;
	private static int velocidadEjes;
	private static int longitudEngranajes;
	private static int velocidadEngranajes;
	private static int capacidadEjes;
	private static int capacidadEngranajes;
	private static int tiempoMontaje;

	// AUTOMATA 2
	private static int longitudTransferencia;
	private static int velocidadtransferencia;
	private static int tiempoSoldado;

	// AUTOMATA 3
	private static int tiempoControl;
	private static int longitudCintaOk;
	private static int velocidadCintaOk;
	private static float umbralError;

	// ROBOT 1
	private static int tiempoRecEje;
	private static int tiempoRecEng;
	private static int tiempoTransEje;
	private static int tiempoTransEng;
	private static int tiempoTransConj;

	// ROBOT 2
	private static int tiempoRecMontado;
	private static int tiempoTransMontado;
	private static int tiempoTransSoldado;

	private static String file_name = "configuracion.bbdd";

	private static String s_cicloReloj = "cicloReloj";

	private static String s_longitudEjes = "longitudEjes";
	private static String s_velocidadEjes = "velocidadEjes";
	private static String s_longitudEngranajes = "longitudEngranajes";
	private static String s_velocidadEngranajes = "velocidadEngranajes";
	private static String s_capacidadEjes = "capacidadEjes";
	private static String s_capacidadEngranajes = "capacidadEngranajes";
	private static String s_tiempoMontaje = "tiempoMontaje";

	private static String s_longitudTransferencia = "longitudTransferencia";
	private static String s_velocidadtransferencia = "velocidadTransferencia";
	private static String s_tiempoSoldado = "tiempoSoldado";

	private static String s_tiempoControl = "tiempoControl";
	private static String s_longitudCintaOk = "longitudCintaOK";
	private static String s_velocidadCintaOk = "velocidadCintaOK";
	private static String s_umbralError = "umbralError";

	private static String s_tiempoRecEje = "tiempoRecEje";
	private static String s_tiempoRecEng = "tiempoRecEng";
	private static String s_tiempoTransEje = "tiempoTransEje";
	private static String s_tiempoTransEng = "tiempoTransEng";
	private static String s_tiempoTransConj = "tiempoTransConj";

	private static String s_tiempoRecMontado = "tiempoRecMontado";
	private static String s_tiempoTransMontado = "tiempoTransMontado";
	private static String s_tiempoTransSoldado = "tiempoTransSoldado";

	/**
	 * @return the hashMap
	 */
	public static synchronized HashMap<String, String> getHashMap() {
		return hashMap;
	}

	/**
	 * @param hashMap
	 *            the hashMap to set
	 */
	public static synchronized void setHashMap(HashMap<String, String> hashMap) {
		Configuracion.hashMap = hashMap;
	}

	/**
	 * @return the cicloReloj
	 */
	public static synchronized int getCicloReloj() {
		return cicloReloj;
	}

	/**
	 * @param cicloReloj
	 *            the cicloReloj to set
	 */
	public static synchronized void setCicloReloj(int cicloReloj) {
		Configuracion.cicloReloj = cicloReloj;
		hashMap.put(s_cicloReloj, "" + cicloReloj);
	}

	/**
	 * @return the longitudEjes
	 */
	public static synchronized int getLongitudEjes() {
		return longitudEjes;
	}

	/**
	 * @param longitudEjes
	 *            the longitudEjes to set
	 */
	public static synchronized void setLongitudEjes(int longitudEjes) {
		Configuracion.longitudEjes = longitudEjes;
		hashMap.put(s_longitudEjes, "" + longitudEjes);
	}

	/**
	 * @return the velocidadEjes
	 */
	public static synchronized int getVelocidadEjes() {
		return velocidadEjes;
	}

	/**
	 * @param velocidadEjes
	 *            the velocidadEjes to set
	 */
	public static synchronized void setVelocidadEjes(int velocidadEjes) {
		Configuracion.velocidadEjes = velocidadEjes;
		hashMap.put(s_velocidadEjes, "" + velocidadEjes);
	}

	/**
	 * @return the longitudEngranajes
	 */
	public static synchronized int getLongitudEngranajes() {
		return longitudEngranajes;
	}

	/**
	 * @param longitudEngranajes
	 *            the longitudEngranajes to set
	 */
	public static synchronized void setLongitudEngranajes(int longitudEngranajes) {
		Configuracion.longitudEngranajes = longitudEngranajes;
		hashMap.put(s_longitudEngranajes, "" + longitudEngranajes);
	}

	/**
	 * @return the velocidadEngranajes
	 */
	public static synchronized int getVelocidadEngranajes() {
		return velocidadEngranajes;
	}

	/**
	 * @param velocidadEngranajes
	 *            the velocidadEngranajes to set
	 */
	public static synchronized void setVelocidadEngranajes(
			int velocidadEngranajes) {
		Configuracion.velocidadEngranajes = velocidadEngranajes;
		hashMap.put(s_velocidadEngranajes, "" + velocidadEngranajes);
	}

	/**
	 * @return the capacidadEjes
	 */
	public static synchronized int getCapacidadEjes() {
		return capacidadEjes;
	}

	/**
	 * @param capacidadEjes
	 *            the capacidadEjes to set
	 */
	public static synchronized void setCapacidadEjes(int capacidadEjes) {
		Configuracion.capacidadEjes = capacidadEjes;
		hashMap.put(s_capacidadEjes, "" + capacidadEjes);
	}

	/**
	 * @return the capacidadEngranajes
	 */
	public static synchronized int getCapacidadEngranajes() {
		return capacidadEngranajes;
	}

	/**
	 * @param capacidadEngranajes
	 *            the capacidadEngranajes to set
	 */
	public static synchronized void setCapacidadEngranajes(
			int capacidadEngranajes) {
		Configuracion.capacidadEngranajes = capacidadEngranajes;
		hashMap.put(s_capacidadEngranajes, "" + capacidadEngranajes);
	}

	/**
	 * @return the tiempoMontaje
	 */
	public static synchronized int getTiempoMontaje() {
		return tiempoMontaje;
	}

	/**
	 * @param tiempoMontaje
	 *            the tiempoMontaje to set
	 */
	public static synchronized void setTiempoMontaje(int tiempoMontaje) {
		Configuracion.tiempoMontaje = tiempoMontaje;
		hashMap.put(s_tiempoMontaje, "" + tiempoMontaje);
	}

	/**
	 * @return the longitudTransferencia
	 */
	public static synchronized int getLongitudTransferencia() {
		return longitudTransferencia;
	}

	/**
	 * @param longitudTransferencia
	 *            the longitudTransferencia to set
	 */
	public static synchronized void setLongitudTransferencia(
			int longitudTransferencia) {
		Configuracion.longitudTransferencia = longitudTransferencia;
		hashMap.put(s_longitudTransferencia, "" + longitudTransferencia);
	}

	/**
	 * @return the velocidadtransferencia
	 */
	public static synchronized int getVelocidadtransferencia() {
		return velocidadtransferencia;
	}

	/**
	 * @param velocidadtransferencia
	 *            the velocidadtransferencia to set
	 */
	public static synchronized void setVelocidadtransferencia(
			int velocidadtransferencia) {
		Configuracion.velocidadtransferencia = velocidadtransferencia;
		hashMap.put(s_velocidadtransferencia, "" + velocidadtransferencia);
	}

	/**
	 * @return the tiempoSoldado
	 */
	public static synchronized int getTiempoSoldado() {
		return tiempoSoldado;
	}

	/**
	 * @param tiempoSoldado
	 *            the tiempoSoldado to set
	 */
	public static synchronized void setTiempoSoldado(int tiempoSoldado) {
		Configuracion.tiempoSoldado = tiempoSoldado;
		hashMap.put(s_tiempoSoldado, "" + tiempoSoldado);
	}

	/**
	 * @return the tiempoControl
	 */
	public static synchronized int getTiempoControl() {
		return tiempoControl;
	}

	/**
	 * @param tiempoControl
	 *            the tiempoControl to set
	 */
	public static synchronized void setTiempoControl(int tiempoControl) {
		Configuracion.tiempoControl = tiempoControl;
		hashMap.put(s_tiempoControl, "" + tiempoControl);
	}

	/**
	 * @return the longitudCintaOk
	 */
	public static synchronized int getLongitudCintaOk() {
		return longitudCintaOk;
	}

	/**
	 * @param longitudCintaOk
	 *            the longitudCintaOk to set
	 */
	public static synchronized void setLongitudCintaOk(int longitudCintaOk) {
		Configuracion.longitudCintaOk = longitudCintaOk;
		hashMap.put(s_longitudCintaOk, "" + longitudCintaOk);
	}

	/**
	 * @return the velocidadCintaOk
	 */
	public static synchronized int getVelocidadCintaOk() {
		return velocidadCintaOk;
	}

	/**
	 * @param velocidadCintaOk
	 *            the velocidadCintaOk to set
	 */
	public static synchronized void setVelocidadCintaOk(int velocidadCintaOk) {
		Configuracion.velocidadCintaOk = velocidadCintaOk;
		hashMap.put(s_velocidadCintaOk, "" + velocidadCintaOk);
	}

	/**
	 * @return the umbralError
	 */
	public static synchronized float getUmbralError() {
		return umbralError;
	}

	/**
	 * @param umbralError
	 *            the umbralError to set
	 */
	public static synchronized void setUmbralError(float umbralError) {
		Configuracion.umbralError = umbralError;
		hashMap.put(s_umbralError, "" + umbralError);
	}

	/**
	 * @return the tiempoRecEje
	 */
	public static synchronized int getTiempoRecEje() {
		return tiempoRecEje;
	}

	/**
	 * @param tiempoRecEje
	 *            the tiempoRecEje to set
	 */
	public static synchronized void setTiempoRecEje(int tiempoRecEje) {
		Configuracion.tiempoRecEje = tiempoRecEje;
		hashMap.put(s_tiempoRecEje, "" + tiempoRecEje);
	}

	/**
	 * @return the tiempoRecEng
	 */
	public static synchronized int getTiempoRecEng() {
		return tiempoRecEng;
	}

	/**
	 * @param tiempoRecEng
	 *            the tiempoRecEng to set
	 */
	public static synchronized void setTiempoRecEng(int tiempoRecEng) {
		Configuracion.tiempoRecEng = tiempoRecEng;
		hashMap.put(s_tiempoRecEng, "" + tiempoRecEng);
	}

	/**
	 * @return the tiempoTransEje
	 */
	public static synchronized int getTiempoTransEje() {
		return tiempoTransEje;
	}

	/**
	 * @param tiempoTransEje
	 *            the tiempoTransEje to set
	 */
	public static synchronized void setTiempoTransEje(int tiempoTransEje) {
		Configuracion.tiempoTransEje = tiempoTransEje;
		hashMap.put(s_tiempoTransEje, "" + tiempoTransEje);
	}

	/**
	 * @return the tiempoTransEng
	 */
	public static synchronized int getTiempoTransEng() {
		return tiempoTransEng;
	}

	/**
	 * @param tiempoTransEng
	 *            the tiempoTransEng to set
	 */
	public static synchronized void setTiempoTransEng(int tiempoTransEng) {
		Configuracion.tiempoTransEng = tiempoTransEng;
		hashMap.put(s_tiempoTransEng, "" + tiempoTransEng);
	}

	/**
	 * @return the tiempoTransConj
	 */
	public static synchronized int getTiempoTransConj() {
		return tiempoTransConj;
	}

	/**
	 * @param tiempoTransConj
	 *            the tiempoTransConj to set
	 */
	public static synchronized void setTiempoTransConj(int tiempoTransConj) {
		Configuracion.tiempoTransConj = tiempoTransConj;
		hashMap.put(s_tiempoTransConj, "" + tiempoTransConj);
	}

	/**
	 * @return the tiempoRecMontado
	 */
	public static synchronized int getTiempoRecMontado() {
		return tiempoRecMontado;
	}

	/**
	 * @param tiempoRecMontado
	 *            the tiempoRecMontado to set
	 */
	public static synchronized void setTiempoRecMontado(int tiempoRecMontado) {
		Configuracion.tiempoRecMontado = tiempoRecMontado;
		hashMap.put(s_tiempoRecMontado, "" + tiempoRecMontado);
	}

	/**
	 * @return the tiempoTransMontado
	 */
	public static synchronized int getTiempoTransMontado() {
		return tiempoTransMontado;
	}

	/**
	 * @param tiempoTransMontado
	 *            the tiempoTransMontado to set
	 */
	public static synchronized void setTiempoTransMontado(int tiempoTransMontado) {
		Configuracion.tiempoTransMontado = tiempoTransMontado;
		hashMap.put(s_tiempoTransMontado, "" + tiempoTransMontado);
	}

	/**
	 * @return the tiempoTransSoldado
	 */
	public static synchronized int getTiempoTransSoldado() {
		return tiempoTransSoldado;
	}

	/**
	 * @param tiempoTransSoldado
	 *            the tiempoTransSoldado to set
	 */
	public static synchronized void setTiempoTransSoldado(int tiempoTransSoldado) {
		Configuracion.tiempoTransSoldado = tiempoTransSoldado;
		hashMap.put(s_tiempoTransSoldado, "" + tiempoTransSoldado);
	}

	public Configuracion() {
		hashMap = Config.read(file_name);

		cicloReloj = Integer.parseInt(hashMap.get(s_cicloReloj));

		longitudEjes = Integer.parseInt(hashMap.get(s_longitudEjes));
		velocidadEjes = Integer.parseInt(hashMap.get(s_velocidadEjes));
		longitudEngranajes = Integer
				.parseInt(hashMap.get(s_longitudEngranajes));
		velocidadEngranajes = Integer.parseInt(hashMap
				.get(s_velocidadEngranajes));
		capacidadEjes = Integer.parseInt(hashMap.get(s_capacidadEjes));
		capacidadEngranajes = Integer.parseInt(hashMap
				.get(s_capacidadEngranajes));
		tiempoMontaje = Integer.parseInt(hashMap.get(s_tiempoMontaje));

		longitudTransferencia = Integer.parseInt(hashMap
				.get(s_longitudTransferencia));
		velocidadtransferencia = Integer.parseInt(hashMap
				.get(s_velocidadtransferencia));
		tiempoSoldado = Integer.parseInt(hashMap.get(s_tiempoSoldado));

		tiempoControl = Integer.parseInt(hashMap.get(s_tiempoControl));
		longitudCintaOk = Integer.parseInt(hashMap.get(s_longitudCintaOk));
		velocidadCintaOk = Integer.parseInt(hashMap.get(s_velocidadCintaOk));
		umbralError = Float.parseFloat(hashMap.get(s_umbralError));

		tiempoRecEje = Integer.parseInt(hashMap.get(s_tiempoRecEje));
		tiempoRecEng = Integer.parseInt(hashMap.get(s_tiempoRecEng));
		tiempoTransEje = Integer.parseInt(hashMap.get(s_tiempoTransEje));
		tiempoTransEng = Integer.parseInt(hashMap.get(s_tiempoTransEng));
		tiempoTransConj = Integer.parseInt(hashMap.get(s_tiempoTransConj));

		tiempoRecMontado = Integer.parseInt(hashMap.get(s_tiempoRecMontado));
		tiempoTransMontado = Integer
				.parseInt(hashMap.get(s_tiempoTransMontado));
		tiempoTransSoldado = Integer
				.parseInt(hashMap.get(s_tiempoTransSoldado));

		System.out.println("cicloReloj=" + cicloReloj);

		System.out.println("longitudEjes=" + longitudEjes);
		System.out.println("velocidadEjes=" + velocidadEjes);
		System.out.println("longitudEngranajes=" + longitudEngranajes);
		System.out.println("velocidadEngranajes=" + velocidadEngranajes);
		System.out.println("capacidadEjes=" + capacidadEjes);
		System.out.println("capacidadEngranajes=" + capacidadEngranajes);
		System.out.println("tiempoMontaje=" + tiempoMontaje);

		System.out.println("longitudTransferencia=" + longitudTransferencia);
		System.out.println("velocidadtransferencia=" + velocidadtransferencia);
		System.out.println("tiempoSoldado=" + tiempoSoldado);

		System.out.println("tiempoControl=" + tiempoControl);
		System.out.println("longitudCintaOk=" + longitudCintaOk);
		System.out.println("velocidadCintaOk=" + velocidadCintaOk);
		System.out.println("umbralError=" + umbralError);

		System.out.println("tiempoRecEje=" + tiempoRecEje);
		System.out.println("tiempoRecEng=" + tiempoRecEng);
		System.out.println("tiempoTransEje=" + tiempoTransEje);
		System.out.println("tiempoTransEng=" + tiempoTransEng);
		System.out.println("tiempoTransConj=" + tiempoTransConj);

		System.out.println("tiempoRecMontado=" + tiempoRecMontado);
		System.out.println("tiempoTransMontado=" + tiempoTransMontado);
		System.out.println("tiempoTransSoldado=" + tiempoTransSoldado);

	}
		
	
	private static synchronized void resetear() {
		// Genera un fichero de informes virgen
		HashMap<String, String> hashMapReset = new HashMap<String, String>();

		// Para todos
		hashMapReset.put(s_cicloReloj, "500");
		// Automata 1
		hashMapReset.put(s_longitudEjes, "10");
		hashMapReset.put(s_velocidadEjes, "20");
		hashMapReset.put(s_longitudEngranajes, "10");
		hashMapReset.put(s_velocidadEngranajes, "20");
		hashMapReset.put(s_capacidadEjes, "50");
		hashMapReset.put(s_capacidadEngranajes, "50");
		hashMapReset.put(s_tiempoMontaje, "3");
		// Automata 2
		hashMapReset.put(s_longitudTransferencia, "10");
		hashMapReset.put(s_velocidadtransferencia, "20");
		hashMapReset.put(s_tiempoSoldado, "30");
		// Automata 3
		hashMapReset.put(s_tiempoControl, "5");
		hashMapReset.put(s_longitudCintaOk, "10");
		hashMapReset.put(s_velocidadCintaOk, "10");
		hashMapReset.put(s_umbralError, "0.2");
		// Robot 1
		hashMapReset.put(s_tiempoRecEje, "5");
		hashMapReset.put(s_tiempoRecEng, "5");
		hashMapReset.put(s_tiempoTransEje, "5");
		hashMapReset.put(s_tiempoTransEng, "5");
		hashMapReset.put(s_tiempoTransConj, "5");
		// Robot 2
		hashMapReset.put(s_tiempoRecMontado, "5");
		hashMapReset.put(s_tiempoTransMontado, "5");
		hashMapReset.put(s_tiempoTransSoldado, "5");

		Config.write(hashMapReset, file_name);
	}
	
	
	public static synchronized void guardar() {

 		Config.write(hashMap, file_name);
	}

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		// Genera un fichero de informes virgen
		Configuracion.resetear();

		// Lee datos de la bbdd
		@SuppressWarnings("unused")
		Configuracion configuraciones = new Configuracion();

		Configuracion.guardar();
	}

}
